package dawn.jxufe.community.config;

import dawn.jxufe.community.annotation.LoginRequired;
import dawn.jxufe.community.controller.intercept.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

/**
 * @author dawn21
 * @version 1.0
 * @date 2022/7/21 10:36
 * @component 配置类，设置拦截器这个组件拦截什么样的请求。
 */

// 配置类，设置拦截器这个组件拦截什么样的请求。拦截后如何处理是在AlphaIntercept中设置。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    // 注入拦截器。
    @Autowired
    private AlphaIntercept alphaIntercept;

    // 注入登录凭证拦截器。
    @Autowired
    private LoginTicketInterceptor loginTicketInterceptor;

//    @Autowired
//    private LoginRequiredInterceptor loginRequiredInterceptor;

    @Autowired
    private MessageInterceptor messageInterceptor;

    @Autowired
    private DataInterceptor dataInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // http://localhost:8080/community/global.css
        // 用这个形参注册拦截器。
        // 静态资源不拦截。**表示匹配static下的所有目录。

         registry.addInterceptor(alphaIntercept)
                .excludePathPatterns("/**/*.css", "/**/*.js",
                        "/**/*.png", "/**/*.jpg", "/**/*.jpeg")
               .addPathPatterns("/register", "/login"); // 只拦截这些方法。拦截了才会打印日志。

        // 拦截(处理)所有请求。
        registry.addInterceptor(loginTicketInterceptor)
                .excludePathPatterns("/**/*.css", "/**/*.js",
                        "/**/*.png", "/**/*.jpg", "/**/*.jpeg");


        // 拦截(处理)所有请求。提高效率。
//        registry.addInterceptor(loginRequiredInterceptor).excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg");

        // 拦截(处理)所有请求。提高效率。
        registry.addInterceptor(messageInterceptor)
                .excludePathPatterns("/**/*.css", "/**/*.js",
                        "/**/*.png", "/**/*.jpg", "/**/*.jpeg");

        // 拦截(处理)所有请求。提高效率。
        registry.addInterceptor(dataInterceptor)
                .excludePathPatterns("/**/*.css", "/**/*.js",
                        "/**/*.png", "/**/*.jpg", "/**/*.jpeg");

    }
}
